স্প্রিং বুট অ্যাপ্লিকেশনে বিভিন্ন ধরনের HTTP ক্লায়েন্ট ব্যবহার করা যায়, যার মাধ্যমে HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE ইত্যাদি) পরিচালনা করা যায়। নিচে Spring Boot-এ ব্যবহৃত কিছু সাধারণ HTTP ক্লায়েন্ট এবং তাদের বৈশিষ্ট্য তুলে ধরা হলো:
deprecated
হিসেবে চিহ্নিত হয়েছে এবং WebClient ব্যবহারের সুপারিশ করা হয়েছে।import org.springframework.web.client.RestTemplate;
public class RestTemplateExample {
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
String url = "https://api.example.com/data";
// GET Request
String response = restTemplate.getForObject(url, String.class);
System.out.println("Response: " + response);
// POST Request
MyRequestBody requestBody = new MyRequestBody("value1", "value2");
MyResponseBody responseBody = restTemplate.postForObject(url, requestBody, MyResponseBody.class);
System.out.println("Response Body: " + responseBody);
}
}
RestTemplate
-এর পরবর্তী প্রজন্ম।import org.springframework.web.reactive.function.client.WebClient;
public class WebClientExample {
public static void main(String[] args) {
WebClient webClient = WebClient.create("https://api.example.com");
// GET Request
String response = webClient.get()
.uri("/data")
.retrieve()
.bodyToMono(String.class)
.block();
System.out.println("Response: " + response);
// POST Request
MyRequestBody requestBody = new MyRequestBody("value1", "value2");
MyResponseBody responseBody = webClient.post()
.uri("/data")
.bodyValue(requestBody)
.retrieve()
.bodyToMono(MyResponseBody.class)
.block();
System.out.println("Response Body: " + responseBody);
}
}
RestTemplate
বা WebClient
কাস্টমাইজ করার জন্য।import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class ApacheHttpClientExample {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet("https://api.example.com/data");
try (CloseableHttpResponse response = httpClient.execute(request)) {
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Response: " + responseBody);
}
}
}
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpExample {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.example.com/data")
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println("Response: " + response.body().string());
}
}
}
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "example-client", url = "https://api.example.com")
public interface ExampleClient {
@GetMapping("/data")
String getData();
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class JavaHttpClientExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + response.body());
}
}
HTTP ক্লায়েন্ট | সিনক্রোনাস/অ্যাসিনক্রোনাস | রিঅ্যাকটিভ সাপোর্ট | ব্যবহার ক্ষেত্র |
---|---|---|---|
RestTemplate | সিনক্রোনাস | না | সাধারণ HTTP কল |
WebClient | অ্যাসিনক্রোনাস | হ্যাঁ | রিঅ্যাকটিভ HTTP কল |
Apache HttpClient | সিনক্রোনাস/অ্যাসিনক্রোনাস | না | কাস্টম HTTP কল |
OkHttp | সিনক্রোনাস/অ্যাসিনক্রোনাস | না | ফাস্ট HTTP কল |
Feign | সিনক্রোনাস | না | ডিক্লারেটিভ কল |
Java HttpClient | সিনক্রোনাস/অ্যাসিনক্রোনাস | না | বিল্ট-ইন HTTP কল |
আপনার প্রজেক্টের চাহিদা অনুযায়ী HTTP ক্লায়েন্ট নির্বাচন করুন।
Read more